1. Technical Field
This invention generally relates to data processing, and more specifically relates to logically partitioned computer systems.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments. The eServer computer system developed by IBM is an example of a computer system that supports logical partitioning. If logical partitioning on an eServer computer system is desired, partition manager code (referred to as a “hypervisor” in eServer terminology) is installed that allows defining different computing environments on the same platform. Once the partition manager is installed, logical partitions may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
A computer system that includes multiple logical partitions typically shares resources between the logical partitions. For example, in a computer system with a single CPU, two logical partitions could be defined that allocates 50% of the CPU to each partition, that allocates 33% of the memory to the first partition and 67% of the memory to the second partition, and that allocates two different I/O slots to the two logical partitions, one per partition. Once logical partitions are defined and shared resources are allocated to the logical partitions, each logical partition acts as a separate computer system. Thus, in the example above that has a single CPU with two logical partitions in a computer system, the two logical partitions will appear for all practical purposes to be two separate and distinct computer systems.
An issue that arises with any computer system is how to perform debug functions. Software debuggers are known, but require that the computer system properly boot before the software debugger may be executed. A software debugger is thus useless to debug failures that occur while the computer system is booting. Hardware debuggers are also know in the art. In known eServer computer systems, a separate processor known as a service processor is coupled to the main processors and memory. The service processor may typically execute even if the computer system fails to boot. A hardware debugger in the service processor may thus be used to detect bugs in the computer system as the computer system boots up. The hardware debugger allows a user to set breakpoints and perform other debug functions, such as examining and altering the contents of memory. This typically requires that all processors in the computer system be stopped.
In a logically partitioned computer system, each partition provides a separate and distinct computing environment. If debugging is required on one logical partition, it may be undesirable to stop all processors, because other logical partitions on the system will have to stop even though they have no problems that need to be debugged. For this reason, the prior art hardware debugger may not be suitable for debugging problems in a single logical partition, because all logical partitions have to be stopped to use the hardware debugger. Without a way to debug a logical partition without requiring other logical partitions to stop, the computer industry will continue to suffer from inefficient debug mechanisms and methods for logically partitioned computer systems.